The delivery of end-to-end services in a communications network often requires the performance of a variety of service functions. Such service functions may include, but are not limited to, firewalls and traditional IP Network Address Translators (“NATs”), as well as application-specific functions. The definition and instantiation of an ordered set of service functions and the subsequent steering of traffic through those functions is referred to as service function chaining (“SFC”), or simply service chaining. In the process, the traffic is serviced as per policy in the service functions and the service chaining infrastructure. Within a service chaining infrastructure, analytics are performed by way of techniques available in infrastructure switches, such as traffic replication at the port level (commonly referred to as port mirroring). Another technique for performing analytics is to capture traffic details at flow granularity (commonly referred to as NetFlow). In the latter case, filters are used to select flows of interest. In all such techniques, a monitoring, or analytics, node is the destination for the replicated traffic or traffic records. These techniques are highly inefficient and add sufficient overhead when deployed in a service chaining infrastructure. Not only is the granularity of traffic replicated too coarse, in the case of port mirroring, it also does not align with the service chains of interest to be mirrored. The consequence of this is increased overhead at both ends of the replication: copying unnecessary traffic in the infrastructure and processing/analyzing same at the other end. Although filtering rules used in NetFlow may be extended to match the service chain boundaries, it is very limited to address the end-to-end view necessary in service chaining architectures for meaningful analytics to aid Operations, Administration, Management (“OAM”) functions. Moreover, it requires classification to be performed at every point NetFlow is active.